He estado construyendo Boot.dev como un proyecto paralelo durante los últimos dos años, y recientemente muchos estudiantes nuevos han hecho la misma pregunta:
"¿Por qué su plan de estudios de informática requiere que aprenda más de un lenguaje de programación?"
Parece que un buen número de estudiantes se suman a la plataforma con la opinión de que prefieren “dominar completamente un solo idioma” que “dividir sus esfuerzos”. Si bien planeo explicar esto mejor en la aplicación en sí, quería escribir esta publicación de blog para brindar una explicación detallada de por qué le hacemos aprender varios idiomas en el transcurso de nuestro programa de CS.
Para que pueda entender de dónde vengo, permítame explicarle qué es Boot.dev y cuáles son sus objetivos como plataforma educativa.
Boot.dev es un plan de estudios de informática con pilas incluidas en el navegador. Tenemos algunas opiniones sólidas sobre la mejor manera de aprender a codificar. Por ejemplo:
Si observa el plan de estudios completo de CS que hemos planeado en nuestra hoja de ruta pública en Github , verá que es básicamente imposible. Hay ciertos conceptos que están tan estrechamente ligados a tecnologías específicas que no tiene sentido tratar de enseñarlos todos de la misma manera. Veamos algunos ejemplos triviales.
En resumen, tenemos 2 objetivos en competencia:
En el transcurso de mi título de informática tradicional en la universidad, utilicé más de 12 lenguajes de programación. Creo que son demasiados. No quiero enseñar idiomas por enseñarlos. Es realmente un problema de optimización en el que queremos introducir la menor cantidad de idiomas posible, mientras enseñamos de manera efectiva todos los conceptos que queremos enseñar. Estoy seguro de que el plan de estudios completo para Boot.dev solo requerirá el uso de aproximadamente 6 idiomas en total, y que la mayoría del programa solo puede usar JavaScript, Python y Go.
Hay un beneficio adicional de aprender algunos lenguajes de programación diferentes de los que aún no hemos hablado. Al exponerlo a diferentes lenguajes, comenzará a ver algunos de los beneficios, inconvenientes, similitudes y diferencias entre los diversos enfoques de la programación .
Si solo escribe un lenguaje de programación, es fácil asumir que cierta forma de hacer las cosas es la "mejor manera", la "manera correcta" o incluso la "única manera".
Por ejemplo, JavaScript y Go tienen enfoques muy diferentes para el flujo de errores:
// JavaScript try { doSomethingDangerous() } catch (err){ console.log(err) } // Go err := doSomethingDangerous() if err != nil { fmt.Println(err) }
Al familiarizarlo con varios idiomas, creo firmemente que tendrá una comprensión más profunda de cada tecnología y cuándo querrá usar diferentes herramientas.
Personalmente, no lo creo. Realmente creo que si te concentraras en un solo lenguaje de programación desde el comienzo de tu viaje de aprendizaje hasta tu primer trabajo de codificación, en realidad estarías en peor forma que si hubieras pasado algún tiempo ampliando tus horizontes.
Algunas personas asumen que "aprender a codificar" se trata de "aprender un lenguaje de programación". Piensan que si aprendes Python y luego quieres aprender JavaScript, empezarás desde cero.
Eso no podría estar más lejos de la verdad.
Aprender tu segundo lenguaje de programación te tomará 1/5 del tiempo que te tomó aprender el primero, porque ~80% de los conceptos que aprendiste se aplicarán a ambos lenguajes. Una vez que haya utilizado 3 o 4 lenguajes de codificación diferentes, puede mirar el código en casi cualquier idioma y comprender lo que dice. Es posible que necesite buscar la sintaxis de vez en cuando, pero todos lo hacen de todos modos .
Si ha navegado por el plan de estudios, es posible que haya notado que nos hemos decidido por 3 idiomas para enseñar la mayoría del contenido:
Vamos a intentar usar estos 3 lenguajes tanto como podamos , solo mezclando otras tecnologías según lo requiera el tema. Por ejemplo, usar SQL cuando hablamos de bases de datos relacionales.
Permítanme explicar por qué elegimos estos tres en particular.
Realmente no puedes alejarte de JavaScript en estos días. Es difícil aprender sobre programación backend (que es lo que les interesa a la mayoría de nuestros estudiantes) sin entender primero por qué existe un backend. Un backend solo existe para impulsar un front-end, por lo que tiene sentido que primero debamos enseñarle algunos conceptos básicos del front-end. Si va a construir un front-end en la web, es casi seguro que utilizará JavaScript, por lo que nuestra mano se ve obligada a hacerlo.
Python se quita de en medio, sintácticamente hablando. Los algoritmos y las estructuras de datos son conceptos que los estudiantes a menudo encuentran más difíciles de dominar, por lo que tenía sentido para nosotros elegir un lenguaje que permitiera a nuestros estudiantes concentrarse tanto como fuera posible en la lógica. Python también se lee como inglés de muchas maneras, lo que nuevamente hace que sea más fácil ver lo que está haciendo un algoritmo en Python de un vistazo. Además, tenemos contenido de IA y ML hacia el final del plan de estudios, por lo que es una situación de dos pájaros en la piedra en la que podemos volver a visitar Python en ese punto sin que nuestros estudiantes necesiten aprender un idioma adicional.
Nuestro título de CS tiene un énfasis en la programación de back -end, y personalmente he tenido un gran éxito con Go como lenguaje de back-end. Go hará que sea más fácil enseñar cosas como concurrencia, compiladores y sistemas distribuidos que algunas de las otras opciones en las que he pensado. Creo que eventualmente podríamos tener un curso de Rust que vaya a un nivel aún más bajo en términos de administración manual de memoria, pero aún no lo he decidido.
La mejor manera de comunicarse conmigo directamente es unirse al servidor Boot.dev Discord . También puedes @me en Twitter . ¡Déjame saber lo que piensas de nuestro enfoque!
También publicado aquí https://blog.boot.dev/education/learn-multiple-programming-languages/